package tianrun.ziguan.api.calculate.config.service.sync.handler;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import tianrun.ziguan.api.calculate.config.dto.request.CalLabelConfigVO;
import tianrun.ziguan.api.calculate.config.dto.request.ExpressionVO;
import tianrun.ziguan.api.calculate.config.dto.request.TAssetExpressionVO;
import tianrun.ziguan.api.calculate.config.dto.response.TAssetCalLabelConfigVO;
import tianrun.ziguan.api.calculate.config.entity.TAssetCalLabelConfig;
import tianrun.ziguan.api.calculate.config.entity.TAssetExpression;
import tianrun.ziguan.api.calculate.config.entity.TCalLabelConfig;
import tianrun.ziguan.api.calculate.config.entity.TExpression;
import tianrun.ziguan.api.calculate.config.entity.base.*;
import tianrun.ziguan.api.calculate.config.enums.MoldEnum;
import tianrun.ziguan.api.calculate.config.service.asset.callabel.ITAssetCalLabelConfigService;
import tianrun.ziguan.api.calculate.config.service.asset.experssion.ITAssetExpressionService;
import tianrun.ziguan.api.calculate.config.service.cal.label.ITCalLabelConfigService;
import tianrun.ziguan.api.calculate.config.service.expression.ITExpressionService;
import tianrun.ziguan.api.calculate.config.service.sync.SyncType;
import tianrun.ziguan.api.calculate.config.utils.MyBeanUtil;
import tianrun.ziguan.api.calculate.config.utils.Setter;
import tianrun.ziguan.api.common.util.ListUtil;

import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

public interface SyncHandler {

    MoldEnum mold();

    SyncType type();

    /**
     * @param moduleIds 同一模板下不同组件的id
     * @param parentIds t_template.id or t_cal_asset.id
     */
    void handler(Set<Long> moduleIds, Set<Long> parentIds);

}
